﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cotizav.CONEXION;
using Cotizav.CONTROLADOR;

namespace Cotizav.PRESENTACION.Maestro
{
    public partial class IUCondicion : Form
    {
        List<CONDICION> condiciones;
        CtrlCondicion ctCondicion;

        public IUCondicion()
        {
            InitializeComponent();

            condiciones = new List<CONDICION>();
            ctCondicion = new CtrlCondicion();
        }

        private void IUCondicion_Load(object sender, EventArgs e)
        {
            condiciones = ctCondicion.getListCondicion();
            gridCondicion.DataSource = null;
            gridCondicion.DataSource = condiciones;
            gridCondicion.ClearSelection();
            setRowsReadOnly();
        }

        private void setRowsReadOnly()
        {
            foreach (DataGridViewRow dr in gridCondicion.Rows)
            {
                dr.ReadOnly = true;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtCondicion.Text))
            {
                if (cmbTipoCondicion.SelectedIndex >= 0)
                {
                    CONDICION cond = new CONDICION()
                    {
                        nombreCondicion = txtCondicion.Text,
                        tipoCondicion = cmbTipoCondicion.SelectedItem.ToString(),
                        eliminado = 0,
                        esDefecto = chkDefecto.Checked ? 1 : 0
                    };

                    bool result = ctCondicion.registrarCondicion(cond);

                    if (result)
                    {
                        condiciones = ctCondicion.getListCondicion();
                        gridCondicion.DataSource = null;
                        gridCondicion.DataSource = condiciones;
                        setRowsReadOnly();
                    }

                    gridCondicion.ClearSelection();
                    txtCondicion.ResetText();
                    cmbTipoCondicion.SelectedIndex = -1;                    
                    chkDefecto.Checked = false;
                }
                else
                {
                    MessageBox.Show("Seleccione el tipo de condición", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
            else
            {
                MessageBox.Show("Ingrese campo de condición", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }

        private char getTipoCondicion(string value)
        {
            char result = ' ';

            switch(value)
            {
                case "Alquiler":
                    result = 'A';
                    break;
                case "Comercial":
                    result = 'C';
                    break;
                case "Información adicional":
                    result = 'I';
                    break;
            }

            return result;
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (gridCondicion.SelectedRows.Count > 0)
            {
                btnAgregar.Enabled = false;
                btnEliminar.Enabled = false;
                txtCondicion.Enabled = true;
                cmbTipoCondicion.Enabled = true;
                chkDefecto.Enabled = true;

                gridCondicion.ForeColor = Color.Gray;
                gridCondicion.Enabled = false;

                switch (btnModificar.Text)
                {
                    case "Modificar":
                        DataGridViewRow selectedRow = gridCondicion.SelectedRows[0];

                        txtCondicion.Text = selectedRow.Cells["nombreCondicion"].Value.ToString();
                        string tipoCondicion = selectedRow.Cells["tipoCondicion"].Value.ToString();
                        cmbTipoCondicion.SelectedIndex = cmbTipoCondicion.Items.Cast<string>().SingleOrDefault(x => x == tipoCondicion) != null ? cmbTipoCondicion.Items.IndexOf(cmbTipoCondicion.Items.Cast<string>().SingleOrDefault(x => x == tipoCondicion)) : -1;

                        //selectedIndexGrid = gridCondicion.SelectedRows[0].Index;
                        
                        btnModificar.Text = "Completar";
                        btnModificar.Tag = selectedRow.Cells["idCondicion"].Value.ToString();
                        btnModificar.Image = global::Cotizav.Properties.Resources.accept;

                        btnCancelar.Visible = true;

                        //gridCondicion.SelectedRows[0].ReadOnly = false;
                        //gridCondicion.SelectedRows[0].Cells[1].Selected = true;

                        //DataGridViewComboBoxCell comboCell = new DataGridViewComboBoxCell();
                        //comboCell.Items.AddRange(new string[] { "Alquiler", "Comercial", "Información adicional" });

                        //gridCondicion.SelectedRows[0].Cells[4] = comboCell;

                        //gridCondicion.CurrentCell = gridCondicion.SelectedRows[0].Cells[1];
                        //gridCondicion.BeginEdit(true);
                        break;
                    case "Completar":
                        if (btnModificar.Tag != null)
                        {
                            if (!string.IsNullOrWhiteSpace(btnModificar.Tag.ToString()))
                            {
                                if (MessageBox.Show("¿Confirma actualizar la información?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                                {
                                    CONDICION condic = new CONDICION()
                                    {
                                        idCondicion = btnModificar.Tag.ToString(),
                                        nombreCondicion = txtCondicion.Text,
                                        tipoCondicion = cmbTipoCondicion.SelectedItem.ToString(),
                                        eliminado = 0,
                                        esDefecto = chkDefecto.Checked ? 1 : 0
                                    };

                                    ctCondicion.actualizarCondicion(condic);
                                }
                            }
                            else
                            {
                                MessageBox.Show("La celda se encuentra vacía", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                            }

                            condiciones = ctCondicion.getListCondicion();
                            gridCondicion.DataSource = null;
                            gridCondicion.DataSource = condiciones;
                            gridCondicion.ClearSelection();
                            setRowsReadOnly();

                            btnModificar.Text = "Modificar";
                            btnModificar.Image = global::Cotizav.Properties.Resources.edit16;

                            btnCancelar.Visible = false;
                            btnAgregar.Enabled = true;
                            btnEliminar.Enabled = true;

                            txtCondicion.Enabled = true;
                            txtCondicion.ResetText();

                            cmbTipoCondicion.Enabled = true;
                            cmbTipoCondicion.SelectedIndex = -1;

                            chkDefecto.Enabled = true;
                            chkDefecto.Checked = false;

                            gridCondicion.ForeColor = Color.FromArgb(255, 0, 0, 0);
                            gridCondicion.Enabled = true;
                        }
                        break;
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            condiciones = ctCondicion.getListCondicion();
            gridCondicion.DataSource = null;
            gridCondicion.DataSource = condiciones;
            gridCondicion.ClearSelection();
            setRowsReadOnly();
           
            btnModificar.Text = "Modificar";
            btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;
            btnCancelar.Visible = false;

            txtCondicion.Enabled = true;
            txtCondicion.ResetText();
            cmbTipoCondicion.Enabled = true;
            cmbTipoCondicion.SelectedIndex = -1;

            chkDefecto.Enabled = true;
            chkDefecto.Checked = false;

            btnAgregar.Enabled = true;
            btnEliminar.Enabled = true;

            gridCondicion.ForeColor = Color.FromArgb(255, 0, 0, 0);
            gridCondicion.Enabled = true;
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridCondicion.SelectedRows.Count > 0)
            {
                if (MessageBox.Show("¿Confirma eliminar la condición?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                {
                    int index = gridCondicion.SelectedRows[0].Index;
                    CONDICION condicion = condiciones.ElementAt(index);
                    condicion.eliminado = 1;

                    ctCondicion.eliminarCondicion(condicion);

                    condiciones = ctCondicion.getListCondicion();
                    gridCondicion.DataSource = null;
                    gridCondicion.DataSource = condiciones;                    
                    setRowsReadOnly();
                }

                gridCondicion.ClearSelection();
            }            
        }

        private void gridCondicion_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridCondicion.DataSource != null)
            {
                if (gridCondicion.Rows.Count > 0)
                {                   
                    gridCondicion.Columns["idCondicion"].Visible = false;
                    gridCondicion.Columns["nombreCondicion"].HeaderText = "Condición";
                    gridCondicion.Columns["nombreCondicion"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    gridCondicion.Columns["statusflag"].Visible = false;
                    gridCondicion.Columns["eliminado"].Visible = false;
                    gridCondicion.Columns["tipoCondicion"].HeaderText = "Tipo de Condición";
                    gridCondicion.Columns["esDefecto"].HeaderText = "esta por Defecto";
                }
            }
        }

        private void gridCondicion_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (gridCondicion.Columns[e.ColumnIndex].Name == "esDefecto")
            {
                if (e.Value.ToString() == "0")
                {
                    e.Value = "No";
                }
                else if (e.Value.ToString() == "1")
                {
                    e.Value = "Si";
                }
            }
        }
    }
}